import dayjs from 'dayjs'
// ElDatePicker 快捷选项
export const shortcuts = [
  {
    text: '上一周',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
      return [start, end]
    },
  },
  {
    text: '上一月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
      return [start, end]
    },
  },
  {
    text: '上三月',
    value: () => {
      const end = new Date()
      const start = new Date()
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
      return [start, end]
    },
  },
]

/**
 * 日期对象格式化为日期字符串
 * @param date - 日期对象
 * @param format - 日期格式字符串，其中包含以下特殊字符：
 *    - YYYY: 四位数年份
 *    - M:  月份（01-12）
 *    - MM: 两位数月份（01-12）
 *    - D:  日期（01-31）
 *    - DD: 两位数日期（01-31）
 *    - H:  小时（24小时制，00-23）
 *    - HH: 两位数小时（24小时制，00-23）
 *    - h:  小时（12小时制，01-12）
 *    - hh: 两位数小时（12小时制，01-12）
 *    - m:  分钟（00-59）
 *    - mm: 两位数分钟（00-59）
 *    - s: 数秒（00-59）
 *    - ss: 两位数秒（00-59）
 *    - S:  毫秒（000-999）
 *    - Q:  季度（1-4）
 *    - W:  中文星期几（日、一、二、三、四、五、六）
 *    - w:  数字星期几（1-7，1表示星期一，7表示星期日）
 *    - a:  上下午标识（上午或下午）
 *    - A:  AM/PM标识（AM或PM）
 */
export const formatDate = (date: Date, format = 'YYYY-MM-DD HH:mm:ss') => {
  const newDate = dayjs(date)
  if (!newDate.isValid()) return ''
  return newDate.format(format)
}

export const getDate = (dateStr: string, format = 'YYYY-MM-DD HH:mm:ss') => {
  if (dateStr) {
    if (format) {
      return dayjs(dateStr, format).toDate()
    } else {
      return dayjs(dateStr).toDate()
    }
  } else {
    return dayjs().toDate()
  }
}

export const formatDateStr = (
  dateStr: string,
  format = 'YYYY-MM-DD HH:mm:ss',
) => {
  const nowDate = dayjs(dateStr)
  if (!nowDate.isValid()) {
    return ''
  }
  return nowDate.format(format)
}

// 拼接结束时间
export function concatEndTime(time: string) {
  return time ? time + ' 23:59:59.999' : ''
}

// 拼接开始时间
export function concatStartTime(time: string) {
  return time ? time + ' 00:00:00.000' : ''
}

// 禁用日期
export const disabledDate = (time: Date) => {
  const curDay = dayjs().format('YYYY-MM-DD 00:00:00')
  const curDayTime = new Date(curDay).getTime()
  return time.getTime() < curDayTime
}
